package paas.storage.distributedColumnDatabase;

import paas.storage.result.*;

/**
 * 操作表的接口
 *
 * @author xufeng
 * @version 1.0
 * @date 2021/1/23
 */
public interface ITable {
    /**
     * 创建表
     * @param connectionId  数据库连接标识 必填 c128
     * @param database 数据库   不必填 若不传递，则默认为default。 c64
     * @param table 数据表 必填 c64
     * @param columnFamilyList
     * [{"Name":列族，"Version":版本号，
     * "Compressio"n: 压缩格式，"TimeToLive"=
     * 数据保存时间，"BlockCache"=是否开启缓
     * 存}，{…}]
     * 支持的压缩格式有 SNAPPY,GZ,LZ4,LZO
     * 等列簇对象等 json数组字符串
     * @param numRegions 分区数 不必填 n4
     * @param splitMethod 分区方法 支持：HexStringSplit等方法。 不必填 c128
     * @param regionReplication 分区副本数量 整型数值 不必填 n3
     * @param expendParams 扩展参数 c4000 不必填 以json字符串格式定义：
     * {key1:value1, key2:value2,…}。
     * @return
     */
    TableCreateResponse create(String connectionId, String database, String table, String columnFamilyList,Integer numRegions, String splitMethod,Integer regionReplication,String expendParams);

    /**
     * 删除表
     * @param connectionId 数据库连接标识 必填 c128
     * @param database  数据库   不必填 若不传递，则默认为default。 c64
     * @param table 单个数据表名称或正表达式表达数据表
     * 名称。
     * @return
     */
    TableDeleteResponse delete(String connectionId, String database, String table) ;



    /**
     * 创建表
     * @param connectionId  数据库连接标识 必填 c128
     * @param database 数据库   不必填 若不传递，则默认为default。 c64
     * @param table 数据表 必填 c64
     * @param columnFamilyList
     * [{"Name":列族，"Version":版本号，
     * "Compressio"n: 压缩格式，"TimeToLive"=
     * 数据保存时间，"BlockCache"=是否开启缓
     * 存}，{…}]
     * 支持的压缩格式有 SNAPPY,GZ,LZ4,LZO
     * 等列簇对象等 json数组字符串
     * @param autoFlush 自动刷新 否,0=否1=是
     * @param numRegions 分区数 不必填 n4
     * @param splitMethod 分区方法 支持：HexStringSplit等方法。 不必填 c128
     * @param regionReplication 分区副本数量 整型数值 不必填 n3
     * @param expendParams 扩展参数 c4000 不必填 以json字符串格式定义：
     * {key1:value1, key2:value2,…}。
     * @return
     */
     TableUpdateResponse update(String connectionId, String database, String table, String columnFamilyList, int autoFlush, int numRegions, String splitMethod, int regionReplication, String expendParams);

    /**
     * 获取表列表
     * 二必选一，数据库若不传递，则默认
     * 为default；数据表支持正则表达式形
     * 式。
     * @param connectionId
     * @param database 不必填   命名空间 二者选其一
     * @param table 表名 不必填  二者选其一
     * @return
     */
     TableListResponse list(String connectionId, String database, String table);


    /**
     *
     * @param connectionId 连接id
     * @param database 数据库
     * @param tableList 支持以列表形式传递1个或多个数据  (多个用英文逗号隔开)
     * @return
     */
     TableQueryResponse query(String connectionId, String database, String tableList);

    /**
     * 判断表是否存在
     * @param connectionId
     * @param database
     * @param table 必填
     * @return
     */
     TableExistResponse exist(String connectionId, String database, String table);
}
